Ensure blk{tap/back}'s vm_area is not freed twice on error case.
authorJake Wires <jwires@xensource.com>
Sat, 28 Apr 2007 00:54:06 +0000 (17:54 -0700)
committerJake Wires <jwires@xensource.com>
Sat, 28 Apr 2007 00:54:06 +0000 (17:54 -0700)
Signed-off-by: Jake Wires <jwires@xensource.com>
linux-2.6-xen-sparse/drivers/xen/blkback/interface.c
linux-2.6-xen-sparse/drivers/xen/blktap/interface.c

index 61433bba79e247337faa1b4e3ff7ec06e1bb67a2..6df7b734d694d591de1f212249df1faeab0c3a5f 100644 (file)
@@ -136,6 +136,7 @@ int blkif_map(blkif_t *blkif, unsigned long shared_page, unsigned int evtchn)
        {
                unmap_frontend_page(blkif);
                free_vm_area(blkif->blk_ring_area);
+               blkif->blk_rings.common.sring = NULL;
                return err;
        }
        blkif->irq = err;
index 21c4d551e7d5d84d1b4d8aa783861de545dfef86..11f800197a1e7da64b223929759c3e7bbabcb604 100644 (file)
@@ -137,6 +137,7 @@ int tap_blkif_map(blkif_t *blkif, unsigned long shared_page,
        if (err < 0) {
                unmap_frontend_page(blkif);
                free_vm_area(blkif->blk_ring_area);
+               blkif->blk_rings.common.sring = NULL;
                return err;
        }
        blkif->irq = err;